#pragma once
#include "DataStructure/Common/DataStructureNamespace.h"
#include "DataStructure/Common/Integer.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN
/** \enum BeamSectionStandardTypes
 *  梁截面（形状）标准类型
 *
 */
// ToDo 标准梁截面库类型。ANSYS 与 NASTRAN 同一种截面，尺寸参数不一致。需要建立自研软件的格式。并编制文档）
enum class BeamSectionStandardTypes : SG::DataStructure::Common::I8
{
    BEAMSECTYPE_UNKNOW = -1,  ///< 圆形梁截面
    BEAMSECTYPE_ROD    = 0,   ///< 圆形梁截面
    BEAMSECTYPE_BAR    = 1,   ///< 矩形梁截面
    BEAMSECTYPE_TUBE   = 2,   ///< 圆管梁截面
    BEAMSECTYPE_TUBE2  = 3,   ///< 圆管2梁截面
    BEAMSECTYPE_BOX    = 4,   ///< 箱形梁截面
    BEAMSECTYPE_BOX1   = 5,   ///< 箱形1梁截面，ToDo 手册无公式
    BEAMSECTYPE_DBOX   = 6,   ///< 单箱双室箱形梁截面，ToDo 手册无公式
    BEAMSECTYPE_I      = 7,   ///< 工字形梁截面
    BEAMSECTYPE_I1     = 8,   ///< 工字形1梁截面
    BEAMSECTYPE_H      = 9,   ///< H形梁截面
    BEAMSECTYPE_L      = 10,  ///< L形梁截面
    BEAMSECTYPE_CHAN   = 11,  ///< 槽（C）形梁截面
    BEAMSECTYPE_CHAN1  = 12,  ///< 槽（C）形1梁截面
    BEAMSECTYPE_CHAN2  = 13,  ///< 槽（C）形2梁截面
    BEAMSECTYPE_T      = 14,  ///< T形梁截面
    BEAMSECTYPE_T1     = 15,  ///< T形1梁截面
    BEAMSECTYPE_T2     = 16,  ///< T形2梁截面
    BEAMSECTYPE_CROSS  = 17,  ///< 十字形梁截面，ToDo 手册无公式
    BEAMSECTYPE_Z      = 18,  ///< Z形梁截面，ToDo 手册无公式
    BEAMSECTYPE_HEXA   = 19,  ///< 六边形梁截面，ToDo 手册无公式
    BEAMSECTYPE_HAT    = 20,  ///< 帽形梁截面，ToDo 手册无公式
    BEAMSECTYPE_HAT1   = 21,  ///< 帽形1梁截面
    // …
};

// inline BeamSectionStandardTypes Int2VBeamSectionStandardTypes (int int_Type)
//     {
//         BeamSectionStandardTypes vType;
//         switch(int_Type)
//         {
//             case 0: return BEAMSECTYPE_ROD;
//             case 1: return BEAMSECTYPE_BAR;
//             case 2: return BEAMSECTYPE_TUBE;
//             case 3: return BEAMSECTYPE_TUBE2;
//             case 4: return BEAMSECTYPE_BOX;
//             case 5: return BEAMSECTYPE_BOX1;
//             case 6: return BEAMSECTYPE_DBOX;
//             case 7: return BEAMSECTYPE_I;
//             case 8: return BEAMSECTYPE_I1;
//             case 9: return BEAMSECTYPE_H;
//             case 10: return BEAMSECTYPE_L;
//             case 11: return BEAMSECTYPE_CHAN;
//             case 12: return BEAMSECTYPE_CHAN1;
//             case 13: return BEAMSECTYPE_CHAN2;
//             case 14: return BEAMSECTYPE_T;
//             case 15: return BEAMSECTYPE_T1;
//             case 16: return BEAMSECTYPE_T2;
//             case 17: return BEAMSECTYPE_CROSS;
//             case 18: return BEAMSECTYPE_Z;
//             case 19: return BEAMSECTYPE_HEXA;
//             case 20: return BEAMSECTYPE_HAT;
//             case 21: return BEAMSECTYPE_HAT1;
//             default: std::cout<<"error beam section type!"<<std::endl;
//         }
//     };

SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE